

package com.admin.config;

import java.nio.charset.Charset;

import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.SerializationException;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.parser.ParserConfig;
import com.alibaba.fastjson.serializer.SerializerFeature;

/**
 * 	自定义fast序列化管理
 * ClassName:FastJsonRedisSerializer <br/>
 * Reason:	 TODO ADD REASON. <br/>
 * Date:     2019年9月4日 下午3:43:37 <br/>
 * @author   Owner
 * @version  
 * @since    JDK 1.8
 * @see 	 
 */
public class FastJsonRedisSerializer<T> implements RedisSerializer<T>{
	private static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8");
    private Class<T> clazz;
    
    static {


    	ParserConfig.getGlobalInstance().setAutoTypeSupport(true);
    	
    }
    
    
    public FastJsonRedisSerializer(Class<T> clazz) {
        super();
        this.clazz = clazz;
    }

    
	public byte[] serialize(T t) throws SerializationException {
		 if (null == t) {
	            return new byte[0];
	        }
	        return JSON.toJSONString(t, SerializerFeature.WriteClassName).getBytes(DEFAULT_CHARSET);

	
	}

	public T deserialize(byte[] bytes) throws SerializationException {
        if (null == bytes || bytes.length <= 0) {
            return null;
        }
        String str = new String(bytes, DEFAULT_CHARSET);
        return (T) JSON.parseObject(str, clazz);
    }



}

